1. Field of the Invention
The present invention relates generally to application deployment. Still more particularly, the present invention provides a method to use template diagrams, models or patterns to describe the topology consisting of physical software systems.
2. Description of the Related Art
The packaging of Java™ 2 Platform Enterprise Edition (J2EE™) applications are defined by the J2EE™ 1.2 specification. The intent of the specification is that Enterprise ARchive (EAR) files, the fundamental constructs that contain applications, be completely self-contained. Applications are expected to use Application Program Interfaces (APIs) provided by the J2EE™ server vendor, or those within the Enterprise ARchive, and nothing else. This way, applications can be independent of each other. This, in fact, is stated quite clearly in section 8.1.2 of the specification:                A J2EE™ application consists of one or more J2EE™ modules and one J2EE™ application deployment descriptor. A J2EE™ application is packaged using the Java™ Archive (JAR) file format into a file with an .ear (Enterprise ARchive) filename extension. A minimal J2EE™ application package will only contain J2EE™ modules and the application deployment descriptor. A J2EE™ application package may also include libraries referenced by J2EE™ modules, help files and documentation to aid the deployer, etc.        The deployment of a portable J2EE™ application should not depend on any entities that may be contained in the package other than those defined by this specification. Deployment of a portable J2EE™ application must be possible using only the application deployment descriptor and the J2EE™ modules (and their dependent libraries) and descriptors listed in it.        
This statement, however, does not address the issue of the sharing of common code, or what are often referred to as dependent libraries. Essentially, these common libraries, which may be developed internally or purchased from external vendors, provide common function to multiple applications at run time. Creating common code is extremely valuable and provides a number of benefits that have been widely discussed elsewhere.
Current solutions for managing deployment of J2EE™ application servers are mostly manual processes. For instance, to deploy an application in an environment demanding high uptime, a deployer will be responsible for determining a topology capable of providing failover capabilities for an application, creating the application servers on those nodes, and then deploying the applications on the new cluster. In addition, the deployer must determine which resources, such as WebSphere® MQ queues, and databases are required by the application. Then, the deployer must configure both the application servers with the appropriate drivers and resource adapters to communicate to those resources, as well as creating the resources within their own respective servers.